package id.khairizalnetani.tugasakhir;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Locale;
import id.khairizalnetani.tugasakhir.R;
import id.khairizalnetani.tugasakhir.entity.Keterangan;
import id.khairizalnetani.tugasakhir.entity.Laporan;
import id.khairizalnetani.tugasakhir.entity.Siswa;
import roboguice.activity.RoboActivity;
import roboguice.inject.InjectView;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.ProgressDialog;
import android.content.Intent;
import android.database.SQLException;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

public class Halaman2 extends RoboActivity implements OnClickListener
{
	// deklarasi variable final apel
	private final int			TXT_APEL_PAGI		= 0;
	private final int			TXT_APEL_SIANG		= 1;
	private final int			TXT_APEL_MALAM		= 2;

	private final int			TXT_DINASDALAM		= 0;
	private final int			TXT_DINASLUAR		= 1;
	private final int			TXT_SAKIT			= 2;
	private final int			TXT_BEROBAT			= 3;
	private final int			TXT_IZIN			= 4;
	private final int			TXT_TANPAKETERANGAN	= 5;

	// inisialisasi object pada layouts
	@InjectView(R.id.tvFlightSkadron)
	TextView					tvSkadron;
	@InjectView(R.id.tvPelapor)
	TextView					tvNama;
	@InjectView(R.id.tvIdPelapor)
	TextView					tvId;
	@InjectView(R.id.tvTanggal)
	TextView					tvTanggal;
	@InjectView(R.id.rbApel)
	RadioGroup					rbApel;
	@InjectView(R.id.rbApelPagi)
	RadioButton					rbApelPagi;
	@InjectView(R.id.rbApelSiang)
	RadioButton					rbApelSiang;
	@InjectView(R.id.rbApelMalam)
	RadioButton					rbAPelMalam;
	@InjectView(R.id.etJumlahTotalKelas)
	EditText					etTotalKelas;
	@InjectView(R.id.etJumlahHadir)
	EditText					etHadir;
	@InjectView(R.id.etJumlahTidakHadir)
	EditText					etTidakHadir;

	@InjectView(R.id.spIDDinasDalam1)
	Spinner						spIDDinasDalam1;
	@InjectView(R.id.spIDDinasDalam2)
	Spinner						spIDDinasDalam2;
	@InjectView(R.id.spIDDinasDalam3)
	Spinner						spIDDinasDalam3;
	@InjectView(R.id.spIDDinasDalam4)
	Spinner						spIDDinasDalam4;
	@InjectView(R.id.spIDDinasDalam5)
	Spinner						spIDDinasDalam5;

	// etInputDinas Luar
	@InjectView(R.id.spIDDinasLuar1)
	Spinner						spIDDinasLuar1;
	@InjectView(R.id.spIDDinasLuar2)
	Spinner						spIDDinasLuar2;
	@InjectView(R.id.spIDDinasLuar3)
	Spinner						spIDDinasLuar3;
	@InjectView(R.id.spIDDinasLuar4)
	Spinner						spIDDinasLuar4;
	@InjectView(R.id.spIDDinasLuar5)
	Spinner						spIDDinasLuar5;

	@InjectView(R.id.spIDSakit1)
	Spinner						spIDSakit1;
	@InjectView(R.id.spIDSakit2)
	Spinner						spIDSakit2;
	@InjectView(R.id.spIDSakit3)
	Spinner						spIDSakit3;
	@InjectView(R.id.spIDSakit4)
	Spinner						spIDSakit4;
	@InjectView(R.id.spIDSakit5)
	Spinner						spIDSakit5;

	@InjectView(R.id.spIDSakitRS1)
	Spinner						spIDSakitRS1;
	@InjectView(R.id.spIDSakitRS2)
	Spinner						spIDSakitRS2;
	@InjectView(R.id.spIDSakitRS3)
	Spinner						spIDSakitRS3;
	@InjectView(R.id.spIDSakitRS4)
	Spinner						spIDSakitRS4;
	@InjectView(R.id.spIDSakitRS5)
	Spinner						spIDSakitRS5;

	@InjectView(R.id.spIDBerobat1)
	Spinner						spIDBerobat1;
	@InjectView(R.id.spIDBerobat2)
	Spinner						spIDBerobat2;
	@InjectView(R.id.spIDBerobat3)
	Spinner						spIDBerobat3;
	@InjectView(R.id.spIDBerobat4)
	Spinner						spIDBerobat4;
	@InjectView(R.id.spIDBerobat5)
	Spinner						spIDBerobat5;

	@InjectView(R.id.spIDBerobatRS1)
	Spinner						spIDBerobatRS1;
	@InjectView(R.id.spIDBerobatRS2)
	Spinner						spIDBerobatRS2;
	@InjectView(R.id.spIDBerobatRS3)
	Spinner						spIDBerobatRS3;
	@InjectView(R.id.spIDBerobatRS4)
	Spinner						spIDBerobatRS4;
	@InjectView(R.id.spIDBerobatRS5)
	Spinner						spIDBerobatRS5;

	@InjectView(R.id.spIDIzin1)
	Spinner						spIDIzin1;
	@InjectView(R.id.spIDIzin2)
	Spinner						spIDIzin2;
	@InjectView(R.id.spIDIzin3)
	Spinner						spIDIzin3;
	@InjectView(R.id.spIDIzin4)
	Spinner						spIDIzin4;
	@InjectView(R.id.spIDIzin5)
	Spinner						spIDIzin5;

	@InjectView(R.id.spIDTK1)
	Spinner						spIDTK1;
	@InjectView(R.id.spIDTK2)
	Spinner						spIDTK2;
	@InjectView(R.id.spIDTK3)
	Spinner						spIDTK3;
	@InjectView(R.id.spIDTK4)
	Spinner						spIDTK4;
	@InjectView(R.id.spIDTK5)
	Spinner						spIDTK5;

	// button
	@InjectView(R.id.btnSimpanHal2)
	Button						btnSimpan;
	@InjectView(R.id.btnKembaliHal2)
	Button						btnKembali;

	// kumpulan array untk spinner

	private Spinner[]			arrayDinasDalam;
	private Spinner[]			arrayDinasLuar;
	private Spinner[]			arraySakit;
	private Spinner[]			arrayRSSakit;
	private Spinner[]			arrayBerobat;
	private Spinner[]			arrayRSBerobat;
	private Spinner[]			arrayIzin;
	private Spinner[]			arrayTK;

	private Siswa				siswa;
	private int					idSiswa;
	private DBAdapter			db;
	private String				tanggal;
	private int					jumlahKelas;

	// arraylist

	// ArrayList<TipeDataYangDisimpan>
	private ArrayList<String>	listNamaSiswa;
	private ArrayList<Siswa>	listSiswa;
	private ArrayList<String>	listRS;

	// deklarasi progress dialog
	private ProgressDialog		pDialog;

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_halaman2);

		btnSimpan.setOnClickListener(this);
		btnKembali.setOnClickListener(this);

		// instance db adapter
		db = new DBAdapter(this);
		db.open();

		// mengambil data dari bundle yang di bawa oleh activity sebelumny
		Bundle bundle = getIntent().getExtras();
		if (bundle != null)
		{
			idSiswa = bundle.getInt(Halaman1.TAG_ID);
			Utils.TRACE("set id siswa " + idSiswa);
		}

		Utils.TRACE("load siswa execute");
		// memanggil asynctask

		// asynctask adalah class yang dijalankan secara background untuk
		// pengolahan data seperti baca atau tulis database
		new AsyntaskLoadSiswa().execute();

		// fungsi untk penanganan perubahan teks..
		// untuk automatis hitung
		etTidakHadir.addTextChangedListener(new TextWatcher()
		{

			@Override
			public void onTextChanged(CharSequence s, int start, int before, int
					count)
			{
				// TODO Auto-generated method stub

			}

			@Override
			public void beforeTextChanged(CharSequence s, int start, int count,
					int after)
			{
				// TODO Auto-generated method stub

			}

			// setelah teks berubah
			@Override
			public void afterTextChanged(Editable s)
			{
				// TODO Auto-generated method stub

				if (etTidakHadir.getText().toString().equals(""))
				{
					// Jika tidak hadir kosong...
					// tidak melalukan apa2
				} else
				{
					// ambil data dari jumlah tidak hadir
					// kemudian hitung jumlah kelas - jumlah tidak hadir
					int jumlahTidakHadir =
							Integer.parseInt(etTidakHadir.getText().toString());
					int jadi = jumlahKelas - jumlahTidakHadir;
					etHadir.setText("" + jadi);
				}

			}
		});
	}

	// set tampilan berupa flight skadron, nama, id, dan data array
	private void setTampilan()
	{
		String txtFlight = null;
		String txtSkadron = null;
		switch (siswa.getFlight())
		{
			case 1:
				txtFlight = "Flight I";
				break;
			case 2:
				txtFlight = "Flight II";
				break;
			case 3:
				txtFlight = "Flight III";
				break;
			case 4:
				txtFlight = "Flight IV";
				break;
		}

		switch (siswa.getSkadron())
		{
			case 2:
				txtSkadron = "Skadron II";
				break;
			case 3:
				txtSkadron = "Skadron III";
				break;
			case 4:
				txtSkadron = "Skadron IV";
				break;
		}
		tvSkadron.setText(txtFlight + " " + txtSkadron);
		tvNama.setText("Nama : " + siswa.getNama());
		tvId.setText("ID : " + siswa.getId());

		setTanggal();

		setJumlahAnggotaKelas();

		instanceArraySpinner();

		setSpinner();

	}

	private void instanceArraySpinner()
	{
		arrayDinasLuar = new Spinner[]
		{
				spIDDinasLuar1, spIDDinasLuar2, spIDDinasLuar3, spIDDinasLuar4, spIDDinasLuar5

		};
		arrayDinasDalam = new Spinner[]
		{
				spIDDinasDalam1, spIDDinasDalam2, spIDDinasDalam3, spIDDinasDalam4, spIDDinasDalam5

		};
		arraySakit = new Spinner[]
		{
				spIDSakit1, spIDSakit2, spIDSakit3, spIDSakit4, spIDSakit5
		};
		arrayRSSakit = new Spinner[]
		{
				spIDSakitRS1, spIDSakitRS2, spIDSakitRS3, spIDSakitRS4, spIDSakitRS5
		};
		arrayBerobat = new Spinner[]
		{
				spIDBerobat1, spIDBerobat2, spIDBerobat3, spIDBerobat4, spIDBerobat5

		};
		arrayRSBerobat = new Spinner[]
		{
				spIDBerobatRS1, spIDBerobatRS2, spIDBerobatRS3, spIDBerobatRS4, spIDBerobatRS5
		};
		arrayIzin = new Spinner[]
		{
				spIDIzin1, spIDIzin2, spIDIzin3, spIDIzin4, spIDIzin5
		};
		arrayTK = new Spinner[]
		{
				spIDTK1, spIDTK2, spIDTK3, spIDTK4, spIDTK5
		};

	}

	private void setSpinner()
	{
		// TODO Auto-generated method stub
		listNamaSiswa = new ArrayList<String>();
		listNamaSiswa.add("ID SISWA");
		listRS = new ArrayList<String>();
		listRS.add("Rumah Sakit Tujuan");
		listRS.add("RSAU");
		listRS.add("RUSPAU");
		listRS.add("RSPAD");

		// ambil data siswa dari database berdasarkan flight, skadron, kecuali
		// ketua kelas
		listSiswa = db.getAllSiswaBySkadronAndFlight(siswa.getFlight(), siswa.getSkadron(), siswa.getId());

		// memasukkkan data siswa ambil hanya id dan nama..
		// dimaskukkan kedalam list..
		// untuk kebutuhan spinner
		for (int i = 0; i < listSiswa.size(); i++)
		{
			listNamaSiswa.add(String.valueOf(listSiswa.get(i).getId()) + " - " + listSiswa.get(i).getNama());
		}

		// arrayadapter digunakan untk menambah data nama siswa pada spinner
		ArrayAdapter<String> namaSiswaAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,
				listNamaSiswa);
		namaSiswaAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

		// arrayadapter digunakan untk menambah data nama RS pada spinner
		ArrayAdapter<String> namaRSAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,
				listRS);
		namaRSAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

		// menambahkan data arrayadapter ke spinner dengan menggunakan looping
		for (int i = 0; i < 5; i++)
		{
			arrayDinasDalam[i].setAdapter(namaSiswaAdapter);
			arrayDinasLuar[i].setAdapter(namaSiswaAdapter);
			arraySakit[i].setAdapter(namaSiswaAdapter);
			arrayRSSakit[i].setAdapter(namaRSAdapter);
			arrayBerobat[i].setAdapter(namaSiswaAdapter);
			arrayRSBerobat[i].setAdapter(namaRSAdapter);
			arrayIzin[i].setAdapter(namaSiswaAdapter);
			arrayTK[i].setAdapter(namaSiswaAdapter);
		}

	}

	// set jumlah anggota kelas berdasarkan flight dan skadron
	private void setJumlahAnggotaKelas()
	{
		jumlahKelas = db.getCountByFlight(siswa.getFlight(), siswa.getSkadron());
		etTotalKelas.setText(String.valueOf(jumlahKelas));
	}

	// set tanggal
	private void setTanggal()
	{
		SimpleDateFormat sdf = new SimpleDateFormat("d-MMM-yyyy", Locale.US);

		tanggal = sdf.format(new java.util.Date());

		tvTanggal.setText(tanggal);

	}

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event)
	{
		// TODO Auto-generated method stub
		if (keyCode == KeyEvent.KEYCODE_BACK)
		{
			startActivity(new Intent(this, Halaman1.class));
			db.close();
			finish();
		}
		return super.onKeyDown(keyCode, event);
	}

	@Override
	public void onClick(View v)
	{
		switch (v.getId())
		{
		// event ketika tombol simpan di klik
			case R.id.btnSimpanHal2:
				// sebelum menjalankan asynctask dilakukan pengecekan
				if (!checkingSemua())
				{
					// jalankan asynctask
					new AsynTaskHalaman2().execute();

				}
				break;

			case R.id.btnKembaliHal2:
				Bundle bundle = new Bundle();
				bundle.putInt(Halaman1.TAG_ID, siswa.getId());
				bundle.putString(Halaman1.TAG_NAMA, siswa.getNama());
				bundle.putString(Halaman1.TAG_KODE, siswa.getKode_aktivasi());
				bundle.putInt(Halaman1.TAG_SKADRON, siswa.getSkadron());
				bundle.putInt(Halaman1.TAG_FLIGHT, siswa.getFlight());

				Intent i = new Intent(Halaman2.this, SelamatDatangActivity.class);
				i.putExtras(bundle);
				db.close();
				startActivity(i);
				finish();
				break;
		}

	}

	private boolean checkingSemua()
	{
		// cek jenis apel
		if (rbApel.getCheckedRadioButtonId() == -1)
		{
			Toast.makeText(this, "Mohon Pilih jenis apel", Toast.LENGTH_LONG).show();
			return true;
		}
		// cek jumlah yang tidak hadir apakah sudah diisi
		else if (etTidakHadir.getText().toString().equals(""))
		{
			Toast.makeText(this, "Mohon isi jumlah tidak hadir", Toast.LENGTH_LONG).show();
			return true;
		}

		int jumlah = Integer.parseInt(etTidakHadir.getText().toString());
		int banding = getCountFromSpinner();

		if (jumlah != banding)
		{
			Toast.makeText(this, "Jumlah id diinputkan tidak sama dengan jumlah tidak hadir", Toast.LENGTH_LONG).show();
			return true;

		}

		if (checkRS())
		{
			Toast.makeText(this, "Cek rumah sakit tujuan untuk alasan sakit dan berobat", Toast.LENGTH_LONG).show();
			return true;
		}

		return false;
	}

	// fungsi untuk menghitung spinner yang dipilih
	private int getCountFromSpinner()
	{
		int count = 0;
		for (int i = 0; i < 5; i++)
		{
			if (arrayDinasDalam[i].getSelectedItemPosition() != 0)
			{
				Utils.TRACE("tambah count Dinas Dalam");
				count++;
			}

			if (arrayDinasLuar[i].getSelectedItemPosition() != 0)
			{
				Utils.TRACE("tambah count Dinas Luar");
				count++;
			}

			if (arraySakit[i].getSelectedItemPosition() != 0)
			{
				Utils.TRACE("tambah count Sakit ");
				count++;
			}
			if (arrayBerobat[i].getSelectedItemPosition() != 0)
			{
				Utils.TRACE("tambah count Berobat ");
				count++;
			}
			if (arrayIzin[i].getSelectedItemPosition() != 0)
			{
				Utils.TRACE("tambah count Izin");
				count++;
			}
			if (arrayTK[i].getSelectedItemPosition() != 0)
			{
				Utils.TRACE("tambah count TK");
				count++;
			}

		}
		return count;

	}

	// check apakah rs sudah dipilih
	private boolean checkRS()
	{
		for (int i = 0; i < 5; i++)
		{
			// pertama cek apakah spinner sakit pada posisi bukan index 0
			if (arraySakit[i].getSelectedItemPosition() != 0)
			{
				// jika kondisi spinner sakit tidak dalam kondisi 0
				// maka cek spinner rs apakah dalam kondisi index 0
				if (arrayRSSakit[i].getSelectedItemPosition() == 0)
				{
					// jika spinner rs pada index 0 yang artinya rs tidak
					// dipilih
					// maka akan mengembalikan nilai true
					// yang maksudnya adalah terjadi error
					return true;
				}

			}
			if (arrayBerobat[i].getSelectedItemPosition() != 0)
			{
				if (arrayRSBerobat[i].getSelectedItemPosition() == 0)
				{
					return true;
				}

			} else
			{
				return false;
			}

		}
		return false;
	}

	// digunakan untuk mengambil jenis apel yang dipilih
	private int getRadioChecked()
	{
		if (rbAPelMalam.isChecked())
		{
			return TXT_APEL_MALAM;
		} else if (rbApelPagi.isChecked())
		{
			return TXT_APEL_PAGI;
		} else if (rbApelSiang.isChecked())
		{
			return TXT_APEL_SIANG;
		}

		return 0;
	}

	// asynctask untuk load data siswa
	private class AsyntaskLoadSiswa extends AsyncTask<Void, Void, Void>
	{
		// ini method dijalankan secara background
		@Override
		protected Void doInBackground(Void... params)
		{
			Utils.TRACE("do in background");
			siswa = db.getSiswaById(idSiswa);
			return null;
		}

		// method yang akan dijalankan pertama kali class asynctask
		@Override
		protected void onPreExecute()
		{
			// TODO Auto-generated method stub
			super.onPreExecute();

			Utils.TRACE("pre execute");
			pDialog = new ProgressDialog(Halaman2.this);
			pDialog.setMessage("Load Data...");
			pDialog.setCancelable(true);
			pDialog.show();
		}

		@Override
		protected void onPostExecute(Void result)
		{
			// TODO Auto-generated method stub

			pDialog.dismiss();

			Utils.TRACE("on post execute");
			Utils.TRACE("nama : " + siswa.getNama());
			Utils.TRACE("skadron : " + siswa.getSkadron());
			Utils.TRACE("flight : " + siswa.getFlight());

			setTampilan();
			super.onPostExecute(result);
		}
	}

	// asynctask untuk simpan data laporan
	private class AsynTaskHalaman2 extends AsyncTask<Void, Void, Void>
	{
		@Override
		protected void onPostExecute(Void result)
		{
			// TODO Auto-generated method stub

			pDialog.dismiss();

			Toast.makeText(Halaman2.this, "Data berhasil disimpan", Toast.LENGTH_LONG).show();

			super.onPostExecute(result);
		}

		@Override
		protected void onPreExecute()
		{
			super.onPreExecute();

			pDialog = new ProgressDialog(Halaman2.this);
			pDialog.setMessage("Simpan Data...");
			pDialog.setCancelable(true);
			pDialog.show();
		}

		@Override
		protected Void doInBackground(Void... params)
		{
			// TODO Auto-generated method stub
			Utils.TRACE("Masuk do in background");

			int jenisApel = getRadioChecked();
			// perubah data dari string ke integer
			int jumlahHadir = Integer.parseInt(etTotalKelas.getText().toString());
			int kurang = Integer.parseInt(etTidakHadir.getText().toString());
			int hadir = Integer.parseInt(etHadir.getText().toString());

			// buat objek laporan
			Laporan report = new Laporan();
			report.setId_pelapor(siswa.getId());
			report.setJenis_apel(jenisApel);
			report.setTanggal(tvTanggal.getText().toString());
			report.setJumlah(jumlahHadir);
			report.setKurang(kurang);
			report.setHadir(hadir);

			long id_report = 0;
			try
			{
				// coba insert laporan
				id_report = db.createReport(report);
			} catch (SQLException e)
			{
				// TODO: handle exception
			}

			// karena spinner ada 5 maka akan di ulang sampe 5 kali
			for (int i = 0; i < 5; i++)
			{
				// cek apakah spinner dalam kondisi dipilih
				if (arrayDinasDalam[i].getSelectedItemPosition() != 0)
				{
					// jika ya maka insert ke tabel keterangan
					Utils.TRACE("Create report Dinas Dalam");
					Utils.TRACE("Insert ke - " + (i + 1));
					db.createReportKet(new Keterangan(id_report,
							listSiswa.get(arrayDinasDalam[i].getSelectedItemPosition() - 1).getId(), TXT_DINASDALAM));
				}
				if (arrayDinasLuar[i].getSelectedItemPosition() != 0)
				{

					Utils.TRACE("Create report Dinas Luar");
					Utils.TRACE("Insert ke - " + (i + 1));
					db.createReportKet(new Keterangan(id_report, listSiswa
							.get(arrayDinasLuar[i].getSelectedItemPosition() - 1).getId(), TXT_DINASLUAR));
				}
				if (arraySakit[i].getSelectedItemPosition() != 0)
				{

					Utils.TRACE("Create report Sakit");
					Utils.TRACE("Insert ke - " + (i + 1));
					db.createReportSakit(new Keterangan(id_report, listSiswa
							.get(arraySakit[i].getSelectedItemPosition() - 1).getId(), TXT_SAKIT, arrayRSSakit[i]
							.getSelectedItem().toString()));
				}
				if (arrayBerobat[i].getSelectedItemPosition() != 0)
				{

					Utils.TRACE("Create report Berobat");
					Utils.TRACE("Insert ke - " + (i + 1));
					db.createReportSakit(new Keterangan(id_report, listSiswa
							.get(arrayBerobat[i].getSelectedItemPosition() - 1).getId(), TXT_BEROBAT, arrayRSBerobat[i]
							.getSelectedItem().toString()));
				}
				if (arrayIzin[i].getSelectedItemPosition() != 0)
				{

					Utils.TRACE("Create report Izin");
					Utils.TRACE("Insert ke - " + (i + 1));

					db.createReportKet(new Keterangan(id_report, listSiswa
							.get(arrayIzin[i].getSelectedItemPosition() - 1).getId(), TXT_IZIN));
				}
				if (arrayTK[i].getSelectedItemPosition() != 0)
				{

					Utils.TRACE("Create report TK");
					Utils.TRACE("Insert ke - " + (i + 1));
					db.createReportKet(new Keterangan(id_report, listSiswa
							.get(arrayTK[i].getSelectedItemPosition() - 1).getId(), TXT_TANPAKETERANGAN));
				}

			}

			// Bundle digunakn untuk membawa data yang akan ditransfer antar
			// activity
			// put artinya menambahkan data yang akan dipindah antar activity
			// put bisa membawa berbagai tipe data
			// long, int, string dsbg
			Bundle bundle = new Bundle();

			// menambahkan data siswa id dan id report
			bundle.putInt("id", siswa.getId());
			bundle.putLong("id_report", id_report);

			// intent digunakan untuk berpindah activity
			Intent i = new Intent(Halaman2.this, Halaman3.class);
			i.putExtras(bundle);

			// db clos
			db.close();
			// pindah activity
			startActivity(i);

			finish();

			return null;
		}
	}
}
